import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import re
import numpy as np
url = "https://docs.google.com/spreadsheets/d/1mS6khEB6m8cPNenNvY9Tg6bJ6YkmcvCI/export?format=csv&gid=1327379612"
df = pd.read_csv(url)
valid_columns = ["SUBJECT", "NBR", "COURSE NAME", "PROF", "TOTAL", "A+", "A", "A-", "B+", "B", "B-", "C+", "C", "C-", "D", "F", "W", "AVG GPA"]
df = df[valid_columns]
ACCT_df = df.loc[df["SUBJECT"] == "ACCT"]
pd.set_option('display.max_rows', None)
ACCT_df
| SUBJECT | NBR | COURSE NAME | PROF | TOTAL | A+ | A | A- | B+ | B | B- | C+ | C | C- | D | F | W | AVG GPA | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ACCT | 100 | Fin & Mgr Acct | HO, V | 20 | 0 | 5 | 3 | 1 | 5 | 3 | 0 | 0 | 0 | 0 | 0 | 3 | 3.382 |
| 2 | ACCT | 101 | Intro Thry & Prac of Acct I | CHAN, J | 29 | 0 | 13 | 1 | 3 | 5 | 0 | 2 | 0 | 0 | 1 | 0 | 4 | 3.448 |
| 3 | ACCT | 101 | Intro Thry & Prac of Acct I | FEISULLIN, A | 40 | 5 | 2 | 5 | 4 | 3 | 3 | 8 | 2 | 0 | 0 | 2 | 5 | 2.918 |
| 4 | ACCT | 101 | Intro Thry & Prac of Acct I | SUN, F | 40 | 0 | 2 | 10 | 3 | 5 | 0 | 1 | 1 | 3 | 5 | 2 | 6 | 2.634 |
| 5 | ACCT | 101 | Intro Thry & Prac of Acct I | GRUZA, M | 40 | 0 | 2 | 4 | 2 | 3 | 3 | 5 | 0 | 0 | 1 | 3 | 15 | 2.565 |
| 6 | ACCT | 101 | Intro Thry & Prac of Acct I | RUTHIZER, S | 36 | 1 | 2 | 2 | 3 | 8 | 4 | 4 | 5 | 0 | 1 | 3 | 3 | 2.555 |
| 7 | ACCT | 101 | Intro Thry & Prac of Acct I | ROSANO, E | 40 | 0 | 3 | 4 | 3 | 8 | 2 | 4 | 3 | 6 | 3 | 1 | 3 | 2.554 |
| 8 | ACCT | 101 | Intro Thry & Prac of Acct I | COWAN DOCKERY, M | 30 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 8 | 0 | 2 | 6 | 2.430 |
| 9 | ACCT | 101 | Intro Thry & Prac of Acct I | XIAO, J | 39 | 3 | 3 | 2 | 1 | 0 | 2 | 6 | 2 | 2 | 5 | 5 | 6 | 2.139 |
| 10 | ACCT | 101 | Intro Thry & Prac of Acct I | DAUBER, N | 44 | 1 | 2 | 0 | 1 | 4 | 4 | 6 | 3 | 8 | 4 | 3 | 7 | 2.097 |
| 11 | ACCT | 101 | Intro Thry & Prac of Acct I | XIAO, J | 33 | 1 | 1 | 3 | 1 | 3 | 0 | 1 | 4 | 0 | 7 | 7 | 4 | 1.739 |
| 12 | ACCT | 102 | Intro Theo & Prac Acct II | RUTHIZER, S | 35 | 5 | 5 | 3 | 1 | 8 | 3 | 6 | 3 | 0 | 0 | 0 | 1 | 3.126 |
| 13 | ACCT | 102 | Intro Theo & Prac Acct II | FEISULLIN, A | 38 | 4 | 2 | 4 | 8 | 4 | 3 | 4 | 2 | 1 | 0 | 1 | 4 | 3.036 |
| 14 | ACCT | 102 | Intro Theo & Prac Acct II | RUBIN, M | 28 | 2 | 1 | 0 | 2 | 3 | 3 | 4 | 3 | 3 | 1 | 0 | 6 | 2.591 |
| 15 | ACCT | 102 | Intro Theo & Prac Acct II | DAVID, A | 40 | 0 | 4 | 0 | 2 | 8 | 7 | 3 | 3 | 2 | 3 | 3 | 5 | 2.423 |
| 16 | ACCT | 102 | Intro Theo & Prac Acct II | DAVID, A | 33 | 0 | 0 | 4 | 0 | 3 | 5 | 4 | 5 | 1 | 4 | 3 | 4 | 2.145 |
| 17 | ACCT | 102 | Intro Theo & Prac Acct II | GRUZA, M | 17 | 0 | 1 | 0 | 0 | 1 | 2 | 2 | 0 | 0 | 2 | 3 | 6 | 1.727 |
| 18 | ACCT | 201 | Intermediate Accounting l | SATENSTEIN, J | 36 | 17 | 9 | 1 | 4 | 3 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 3.739 |
| 19 | ACCT | 201 | Intermediate Accounting l | BARONE, E | 19 | 4 | 1 | 2 | 1 | 1 | 1 | 1 | 2 | 0 | 0 | 1 | 5 | 3.050 |
| 20 | ACCT | 201 | Intermediate Accounting l | HEASLIP, K | 34 | 1 | 2 | 3 | 2 | 3 | 5 | 4 | 4 | 3 | 0 | 2 | 5 | 2.569 |
| 21 | ACCT | 201 | Intermediate Accounting l | HEASLIP, K | 15 | 0 | 1 | 1 | 3 | 0 | 1 | 1 | 5 | 2 | 0 | 1 | 0 | 2.400 |
| 22 | ACCT | 201 | Intermediate Accounting l | COWAN DOCKERY, M | 27 | 3 | 1 | 0 | 1 | 2 | 0 | 1 | 3 | 6 | 0 | 4 | 6 | 2.086 |
| 23 | ACCT | 202 | Intermediate Accounting II | SCHWALB, H | 27 | 0 | 5 | 1 | 1 | 0 | 4 | 2 | 8 | 0 | 1 | 0 | 4 | 2.700 |
| 24 | ACCT | 202 | Intermediate Accounting II | KUMAR, V | 12 | 0 | 3 | 0 | 0 | 1 | 0 | 0 | 3 | 0 | 0 | 1 | 3 | 2.625 |
| 25 | ACCT | 202 | Intermediate Accounting II | HEASLIP, K | 31 | 1 | 3 | 2 | 1 | 2 | 5 | 1 | 3 | 4 | 0 | 4 | 5 | 2.358 |
| 26 | ACCT | 261 | Business Law I | STEIN, R | 40 | 1 | 12 | 4 | 10 | 6 | 2 | 0 | 0 | 0 | 0 | 0 | 4 | 3.520 |
| 27 | ACCT | 261 | Business Law I | STEIN, R | 29 | 1 | 3 | 7 | 9 | 3 | 2 | 0 | 0 | 0 | 0 | 0 | 2 | 3.440 |
| 28 | ACCT | 261 | Business Law I | KIRSCHNER, D | 19 | 0 | 0 | 6 | 2 | 0 | 4 | 3 | 1 | 1 | 0 | 0 | 2 | 2.953 |
| 29 | ACCT | 261 | Business Law I | LEIBOWICZ, B | 36 | 0 | 3 | 4 | 3 | 8 | 1 | 4 | 7 | 4 | 0 | 0 | 0 | 2.747 |
| 30 | ACCT | 261 | Business Law I | ALTMAN, J | 40 | 1 | 6 | 5 | 2 | 10 | 1 | 2 | 6 | 0 | 6 | 1 | 0 | 2.710 |
| 31 | ACCT | 261 | Business Law I | ALTMAN, J | 35 | 0 | 3 | 3 | 3 | 3 | 7 | 4 | 4 | 0 | 4 | 0 | 3 | 2.648 |
| 32 | ACCT | 305 | Cost Accounting | COHEN, M | 35 | 0 | 9 | 5 | 9 | 5 | 3 | 0 | 1 | 0 | 0 | 0 | 3 | 3.416 |
| 33 | ACCT | 305 | Cost Accounting | COHEN, M | 41 | 2 | 8 | 7 | 8 | 8 | 4 | 1 | 1 | 0 | 0 | 0 | 2 | 3.369 |
| 34 | ACCT | 305 | Cost Accounting | QURESHI, A | 23 | 4 | 5 | 1 | 1 | 3 | 0 | 0 | 2 | 0 | 0 | 1 | 5 | 3.294 |
| 35 | ACCT | 305 | Cost Accounting | SUN, T | 19 | 6 | 1 | 0 | 1 | 2 | 0 | 2 | 2 | 0 | 0 | 3 | 2 | 2.700 |
| 36 | ACCT | 306 | Quant Techniq Pln & Ctrl | ADELBERG, A | 69 | 12 | 27 | 6 | 9 | 4 | 1 | 2 | 4 | 0 | 0 | 0 | 4 | 3.618 |
| 37 | ACCT | 306 | Quant Techniq Pln & Ctrl | STEVENS, M | 40 | 1 | 6 | 10 | 7 | 8 | 2 | 2 | 0 | 0 | 0 | 0 | 4 | 3.392 |
| 38 | ACCT | 311 | Advanced Accounting | BALKARAN, D | 21 | 0 | 6 | 3 | 2 | 4 | 0 | 1 | 1 | 0 | 0 | 1 | 3 | 3.222 |
| 39 | ACCT | 311 | Advanced Accounting | SATENSTEIN, J | 36 | 8 | 2 | 0 | 3 | 5 | 4 | 2 | 6 | 0 | 2 | 1 | 3 | 2.858 |
| 40 | ACCT | 311 | Advanced Accounting | SATENSTEIN, J | 35 | 9 | 1 | 1 | 2 | 4 | 4 | 2 | 4 | 0 | 0 | 4 | 4 | 2.765 |
| 41 | ACCT | 311 | Advanced Accounting | HUANG, Q | 23 | 7 | 1 | 2 | 1 | 1 | 0 | 1 | 2 | 0 | 2 | 5 | 1 | 2.455 |
| 42 | ACCT | 321 | Auditing I | QAMAR, Z | 40 | 8 | 9 | 4 | 5 | 6 | 1 | 1 | 3 | 0 | 0 | 0 | 3 | 3.468 |
| 43 | ACCT | 321 | Auditing I | FITZSIMONS, S | 25 | 0 | 2 | 2 | 2 | 8 | 2 | 2 | 4 | 0 | 0 | 0 | 1 | 2.909 |
| 44 | ACCT | 321 | Auditing I | UDDIN, M | 13 | 0 | 0 | 0 | 3 | 4 | 0 | 2 | 0 | 0 | 0 | 1 | 2 | 2.650 |
| 45 | ACCT | 321 | Auditing I | DAUBER, N | 40 | 5 | 2 | 2 | 1 | 2 | 2 | 4 | 3 | 4 | 5 | 5 | 5 | 2.203 |
| 46 | ACCT | 322 | Auditing II | FITZSIMONS, S | 12 | 0 | 2 | 1 | 4 | 2 | 2 | 0 | 1 | 0 | 0 | 0 | 0 | 3.192 |
| 47 | ACCT | 322 | Auditing II | DAUBER, N | 40 | 4 | 2 | 3 | 7 | 5 | 5 | 4 | 7 | 0 | 0 | 0 | 3 | 2.970 |
| 48 | ACCT | 322 | Auditing II | HITZIG, N | 26 | 0 | 2 | 2 | 1 | 5 | 2 | 8 | 6 | 0 | 0 | 0 | 0 | 2.673 |
| 49 | ACCT | 322 | Auditing II | HITZIG, N | 16 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 6 | 4 | 1 | 0 | 2 | 2.057 |
| 50 | ACCT | 341 | Accounting Information Systems | SUH, J | 18 | 0 | 3 | 1 | 0 | 3 | 2 | 0 | 0 | 1 | 1 | 7 | 0 | 1.822 |
| 51 | ACCT | 343 | Microcomputer Applications | QURESHI, A | 20 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 3.647 |
| 52 | ACCT | 343 | Microcomputer Applications | QURESHI, A | 20 | 0 | 14 | 1 | 0 | 2 | 0 | 0 | 3 | 0 | 0 | 0 | 0 | 3.585 |
| 53 | ACCT | 350 | Financial Statement Analysis | SILVERMAN, A | 12 | 4 | 0 | 0 | 0 | 4 | 1 | 0 | 0 | 0 | 0 | 1 | 2 | 3.070 |
| 54 | ACCT | 362 | Business Law II | KATZ, J | 29 | 6 | 2 | 2 | 2 | 5 | 4 | 0 | 5 | 0 | 0 | 0 | 3 | 3.146 |
| 55 | ACCT | 362 | Business Law II | ALTMAN, J | 22 | 3 | 2 | 3 | 1 | 1 | 4 | 3 | 3 | 0 | 1 | 0 | 1 | 2.957 |
| 56 | ACCT | 363 | Business Law III | HERCZOG, L | 14 | 0 | 2 | 6 | 4 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3.529 |
| 57 | ACCT | 363 | Business Law III | LINN, D | 20 | 2 | 3 | 0 | 4 | 2 | 5 | 1 | 0 | 0 | 0 | 0 | 2 | 3.235 |
| 58 | ACCT | 367 | Fed & Ny State Tax | BLUMENFRUCHT, I | 59 | 5 | 9 | 6 | 9 | 12 | 14 | 2 | 1 | 0 | 0 | 0 | 1 | 3.247 |
| 59 | ACCT | 367 | Fed & Ny State Tax | CALAMARI, J | 12 | 0 | 4 | 1 | 1 | 1 | 0 | 2 | 2 | 1 | 0 | 0 | 0 | 3.025 |
| 60 | ACCT | 367 | Fed & Ny State Tax | BARONE, E | 33 | 4 | 2 | 3 | 2 | 5 | 2 | 4 | 5 | 1 | 4 | 0 | 1 | 2.719 |
| 61 | ACCT | 367 | Fed & Ny State Tax | LEIBOWICZ, B | 20 | 1 | 0 | 1 | 0 | 2 | 0 | 2 | 4 | 0 | 4 | 1 | 2 | 2.020 |
| 62 | ACCT | 372 | Gov & Not for Profit Acct&Aud | BALKARAN, D | 43 | 0 | 9 | 10 | 7 | 5 | 3 | 1 | 2 | 0 | 0 | 2 | 4 | 3.218 |
| 63 | ACCT | 372 | Gov & Not for Profit Acct&Aud | SILVERMAN, A | 40 | 4 | 5 | 2 | 2 | 2 | 5 | 6 | 6 | 0 | 2 | 3 | 3 | 2.630 |
| 64 | ACCT | 372 | Gov & Not for Profit Acct&Aud | SUN, F | 37 | 0 | 1 | 1 | 3 | 8 | 8 | 5 | 6 | 0 | 3 | 0 | 2 | 2.563 |
| 65 | ACCT | 385 | Data Analytics for Accountants | SOLIERI, S | 16 | 2 | 2 | 1 | 3 | 0 | 1 | 0 | 2 | 0 | 0 | 2 | 3 | 2.792 |
| 66 | ACCT | 712 | Adv Fin Acct Theory | HUANG, Q | 19 | 13 | 4 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3.926 |
| 67 | ACCT | 712 | Adv Fin Acct Theory | HITZIG, N | 20 | 0 | 4 | 1 | 2 | 3 | 0 | 6 | 0 | 4 | 0 | 0 | 0 | 2.795 |
| 68 | ACCT | 747 | Tax & Accounting Communication | ZARATE, G | 38 | 29 | 8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4.000 |
| 69 | ACCT | 757 | Fed Taxation of Business Ent | BALKARAN, D | 16 | 0 | 4 | 1 | 2 | 5 | 3 | 0 | 0 | 0 | 0 | 0 | 1 | 3.293 |
| 70 | ACCT | 757 | Fed Taxation of Business Ent | STEVENS, M | 21 | 5 | 1 | 2 | 0 | 1 | 2 | 1 | 1 | 1 | 0 | 3 | 4 | 2.694 |
| 71 | ACCT | 758 | State & Local Tax & Tax-Exempt | KUMAR, V | 10 | 0 | 6 | 0 | 0 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3.600 |
| 72 | ACCT | 760 | IRS Ethical Tax Prac & Proc | BARONE, E | 13 | 0 | 5 | 0 | 2 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3.431 |
| 73 | ACCT | 762 | Deferred Comp & Employee Benef | KUMAR, V | 12 | 2 | 8 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3.833 |
| 74 | ACCT | 785 | Data Analytics for Accountants | SOLIERI, S | 14 | 8 | 3 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 3.746 |
| 75 | ACCT | 785 | Data Analytics for Accountants | SUH, J | 20 | 5 | 4 | 2 | 5 | 1 | 0 | 3 | 0 | 0 | 0 | 0 | 0 | 3.490 |
| 76 | ACCT | 362W | Business Law II | HERCZOG, L | 21 | 1 | 6 | 5 | 5 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 3.585 |
| 77 | ACCT | 362W | Business Law II | LINN, D | 32 | 0 | 9 | 5 | 4 | 6 | 4 | 2 | 0 | 0 | 0 | 0 | 1 | 3.370 |
| 78 | ACCT | 362W | Business Law II | SEYMORE, J | 10 | 0 | 1 | 1 | 0 | 4 | 2 | 0 | 1 | 0 | 0 | 0 | 1 | 3.011 |
# The class number must start with a digit from 1-3, followed by 2 digits from 0-9
# The number can also have a W at the end to represent writing-intensive classes
CourseNumberPattern = r'^[1-3][0-9]{2}W?$'
mask = ACCT_df['NBR'].str.contains(CourseNumberPattern) # Finds what rows match the regular expression pattern
ACCT_df = ACCT_df[mask] # If mask is false, the rows must be entirely removed from the dataframe to prevent false results
ACCT_df
| SUBJECT | NBR | COURSE NAME | PROF | TOTAL | A+ | A | A- | B+ | B | B- | C+ | C | C- | D | F | W | AVG GPA | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ACCT | 100 | Fin & Mgr Acct | HO, V | 20 | 0 | 5 | 3 | 1 | 5 | 3 | 0 | 0 | 0 | 0 | 0 | 3 | 3.382 |
| 2 | ACCT | 101 | Intro Thry & Prac of Acct I | CHAN, J | 29 | 0 | 13 | 1 | 3 | 5 | 0 | 2 | 0 | 0 | 1 | 0 | 4 | 3.448 |
| 3 | ACCT | 101 | Intro Thry & Prac of Acct I | FEISULLIN, A | 40 | 5 | 2 | 5 | 4 | 3 | 3 | 8 | 2 | 0 | 0 | 2 | 5 | 2.918 |
| 4 | ACCT | 101 | Intro Thry & Prac of Acct I | SUN, F | 40 | 0 | 2 | 10 | 3 | 5 | 0 | 1 | 1 | 3 | 5 | 2 | 6 | 2.634 |
| 5 | ACCT | 101 | Intro Thry & Prac of Acct I | GRUZA, M | 40 | 0 | 2 | 4 | 2 | 3 | 3 | 5 | 0 | 0 | 1 | 3 | 15 | 2.565 |
| 6 | ACCT | 101 | Intro Thry & Prac of Acct I | RUTHIZER, S | 36 | 1 | 2 | 2 | 3 | 8 | 4 | 4 | 5 | 0 | 1 | 3 | 3 | 2.555 |
| 7 | ACCT | 101 | Intro Thry & Prac of Acct I | ROSANO, E | 40 | 0 | 3 | 4 | 3 | 8 | 2 | 4 | 3 | 6 | 3 | 1 | 3 | 2.554 |
| 8 | ACCT | 101 | Intro Thry & Prac of Acct I | COWAN DOCKERY, M | 30 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 8 | 0 | 2 | 6 | 2.430 |
| 9 | ACCT | 101 | Intro Thry & Prac of Acct I | XIAO, J | 39 | 3 | 3 | 2 | 1 | 0 | 2 | 6 | 2 | 2 | 5 | 5 | 6 | 2.139 |
| 10 | ACCT | 101 | Intro Thry & Prac of Acct I | DAUBER, N | 44 | 1 | 2 | 0 | 1 | 4 | 4 | 6 | 3 | 8 | 4 | 3 | 7 | 2.097 |
| 11 | ACCT | 101 | Intro Thry & Prac of Acct I | XIAO, J | 33 | 1 | 1 | 3 | 1 | 3 | 0 | 1 | 4 | 0 | 7 | 7 | 4 | 1.739 |
| 12 | ACCT | 102 | Intro Theo & Prac Acct II | RUTHIZER, S | 35 | 5 | 5 | 3 | 1 | 8 | 3 | 6 | 3 | 0 | 0 | 0 | 1 | 3.126 |
| 13 | ACCT | 102 | Intro Theo & Prac Acct II | FEISULLIN, A | 38 | 4 | 2 | 4 | 8 | 4 | 3 | 4 | 2 | 1 | 0 | 1 | 4 | 3.036 |
| 14 | ACCT | 102 | Intro Theo & Prac Acct II | RUBIN, M | 28 | 2 | 1 | 0 | 2 | 3 | 3 | 4 | 3 | 3 | 1 | 0 | 6 | 2.591 |
| 15 | ACCT | 102 | Intro Theo & Prac Acct II | DAVID, A | 40 | 0 | 4 | 0 | 2 | 8 | 7 | 3 | 3 | 2 | 3 | 3 | 5 | 2.423 |
| 16 | ACCT | 102 | Intro Theo & Prac Acct II | DAVID, A | 33 | 0 | 0 | 4 | 0 | 3 | 5 | 4 | 5 | 1 | 4 | 3 | 4 | 2.145 |
| 17 | ACCT | 102 | Intro Theo & Prac Acct II | GRUZA, M | 17 | 0 | 1 | 0 | 0 | 1 | 2 | 2 | 0 | 0 | 2 | 3 | 6 | 1.727 |
| 18 | ACCT | 201 | Intermediate Accounting l | SATENSTEIN, J | 36 | 17 | 9 | 1 | 4 | 3 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 3.739 |
| 19 | ACCT | 201 | Intermediate Accounting l | BARONE, E | 19 | 4 | 1 | 2 | 1 | 1 | 1 | 1 | 2 | 0 | 0 | 1 | 5 | 3.050 |
| 20 | ACCT | 201 | Intermediate Accounting l | HEASLIP, K | 34 | 1 | 2 | 3 | 2 | 3 | 5 | 4 | 4 | 3 | 0 | 2 | 5 | 2.569 |
| 21 | ACCT | 201 | Intermediate Accounting l | HEASLIP, K | 15 | 0 | 1 | 1 | 3 | 0 | 1 | 1 | 5 | 2 | 0 | 1 | 0 | 2.400 |
| 22 | ACCT | 201 | Intermediate Accounting l | COWAN DOCKERY, M | 27 | 3 | 1 | 0 | 1 | 2 | 0 | 1 | 3 | 6 | 0 | 4 | 6 | 2.086 |
| 23 | ACCT | 202 | Intermediate Accounting II | SCHWALB, H | 27 | 0 | 5 | 1 | 1 | 0 | 4 | 2 | 8 | 0 | 1 | 0 | 4 | 2.700 |
| 24 | ACCT | 202 | Intermediate Accounting II | KUMAR, V | 12 | 0 | 3 | 0 | 0 | 1 | 0 | 0 | 3 | 0 | 0 | 1 | 3 | 2.625 |
| 25 | ACCT | 202 | Intermediate Accounting II | HEASLIP, K | 31 | 1 | 3 | 2 | 1 | 2 | 5 | 1 | 3 | 4 | 0 | 4 | 5 | 2.358 |
| 26 | ACCT | 261 | Business Law I | STEIN, R | 40 | 1 | 12 | 4 | 10 | 6 | 2 | 0 | 0 | 0 | 0 | 0 | 4 | 3.520 |
| 27 | ACCT | 261 | Business Law I | STEIN, R | 29 | 1 | 3 | 7 | 9 | 3 | 2 | 0 | 0 | 0 | 0 | 0 | 2 | 3.440 |
| 28 | ACCT | 261 | Business Law I | KIRSCHNER, D | 19 | 0 | 0 | 6 | 2 | 0 | 4 | 3 | 1 | 1 | 0 | 0 | 2 | 2.953 |
| 29 | ACCT | 261 | Business Law I | LEIBOWICZ, B | 36 | 0 | 3 | 4 | 3 | 8 | 1 | 4 | 7 | 4 | 0 | 0 | 0 | 2.747 |
| 30 | ACCT | 261 | Business Law I | ALTMAN, J | 40 | 1 | 6 | 5 | 2 | 10 | 1 | 2 | 6 | 0 | 6 | 1 | 0 | 2.710 |
| 31 | ACCT | 261 | Business Law I | ALTMAN, J | 35 | 0 | 3 | 3 | 3 | 3 | 7 | 4 | 4 | 0 | 4 | 0 | 3 | 2.648 |
| 32 | ACCT | 305 | Cost Accounting | COHEN, M | 35 | 0 | 9 | 5 | 9 | 5 | 3 | 0 | 1 | 0 | 0 | 0 | 3 | 3.416 |
| 33 | ACCT | 305 | Cost Accounting | COHEN, M | 41 | 2 | 8 | 7 | 8 | 8 | 4 | 1 | 1 | 0 | 0 | 0 | 2 | 3.369 |
| 34 | ACCT | 305 | Cost Accounting | QURESHI, A | 23 | 4 | 5 | 1 | 1 | 3 | 0 | 0 | 2 | 0 | 0 | 1 | 5 | 3.294 |
| 35 | ACCT | 305 | Cost Accounting | SUN, T | 19 | 6 | 1 | 0 | 1 | 2 | 0 | 2 | 2 | 0 | 0 | 3 | 2 | 2.700 |
| 36 | ACCT | 306 | Quant Techniq Pln & Ctrl | ADELBERG, A | 69 | 12 | 27 | 6 | 9 | 4 | 1 | 2 | 4 | 0 | 0 | 0 | 4 | 3.618 |
| 37 | ACCT | 306 | Quant Techniq Pln & Ctrl | STEVENS, M | 40 | 1 | 6 | 10 | 7 | 8 | 2 | 2 | 0 | 0 | 0 | 0 | 4 | 3.392 |
| 38 | ACCT | 311 | Advanced Accounting | BALKARAN, D | 21 | 0 | 6 | 3 | 2 | 4 | 0 | 1 | 1 | 0 | 0 | 1 | 3 | 3.222 |
| 39 | ACCT | 311 | Advanced Accounting | SATENSTEIN, J | 36 | 8 | 2 | 0 | 3 | 5 | 4 | 2 | 6 | 0 | 2 | 1 | 3 | 2.858 |
| 40 | ACCT | 311 | Advanced Accounting | SATENSTEIN, J | 35 | 9 | 1 | 1 | 2 | 4 | 4 | 2 | 4 | 0 | 0 | 4 | 4 | 2.765 |
| 41 | ACCT | 311 | Advanced Accounting | HUANG, Q | 23 | 7 | 1 | 2 | 1 | 1 | 0 | 1 | 2 | 0 | 2 | 5 | 1 | 2.455 |
| 42 | ACCT | 321 | Auditing I | QAMAR, Z | 40 | 8 | 9 | 4 | 5 | 6 | 1 | 1 | 3 | 0 | 0 | 0 | 3 | 3.468 |
| 43 | ACCT | 321 | Auditing I | FITZSIMONS, S | 25 | 0 | 2 | 2 | 2 | 8 | 2 | 2 | 4 | 0 | 0 | 0 | 1 | 2.909 |
| 44 | ACCT | 321 | Auditing I | UDDIN, M | 13 | 0 | 0 | 0 | 3 | 4 | 0 | 2 | 0 | 0 | 0 | 1 | 2 | 2.650 |
| 45 | ACCT | 321 | Auditing I | DAUBER, N | 40 | 5 | 2 | 2 | 1 | 2 | 2 | 4 | 3 | 4 | 5 | 5 | 5 | 2.203 |
| 46 | ACCT | 322 | Auditing II | FITZSIMONS, S | 12 | 0 | 2 | 1 | 4 | 2 | 2 | 0 | 1 | 0 | 0 | 0 | 0 | 3.192 |
| 47 | ACCT | 322 | Auditing II | DAUBER, N | 40 | 4 | 2 | 3 | 7 | 5 | 5 | 4 | 7 | 0 | 0 | 0 | 3 | 2.970 |
| 48 | ACCT | 322 | Auditing II | HITZIG, N | 26 | 0 | 2 | 2 | 1 | 5 | 2 | 8 | 6 | 0 | 0 | 0 | 0 | 2.673 |
| 49 | ACCT | 322 | Auditing II | HITZIG, N | 16 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 6 | 4 | 1 | 0 | 2 | 2.057 |
| 50 | ACCT | 341 | Accounting Information Systems | SUH, J | 18 | 0 | 3 | 1 | 0 | 3 | 2 | 0 | 0 | 1 | 1 | 7 | 0 | 1.822 |
| 51 | ACCT | 343 | Microcomputer Applications | QURESHI, A | 20 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 3.647 |
| 52 | ACCT | 343 | Microcomputer Applications | QURESHI, A | 20 | 0 | 14 | 1 | 0 | 2 | 0 | 0 | 3 | 0 | 0 | 0 | 0 | 3.585 |
| 53 | ACCT | 350 | Financial Statement Analysis | SILVERMAN, A | 12 | 4 | 0 | 0 | 0 | 4 | 1 | 0 | 0 | 0 | 0 | 1 | 2 | 3.070 |
| 54 | ACCT | 362 | Business Law II | KATZ, J | 29 | 6 | 2 | 2 | 2 | 5 | 4 | 0 | 5 | 0 | 0 | 0 | 3 | 3.146 |
| 55 | ACCT | 362 | Business Law II | ALTMAN, J | 22 | 3 | 2 | 3 | 1 | 1 | 4 | 3 | 3 | 0 | 1 | 0 | 1 | 2.957 |
| 56 | ACCT | 363 | Business Law III | HERCZOG, L | 14 | 0 | 2 | 6 | 4 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3.529 |
| 57 | ACCT | 363 | Business Law III | LINN, D | 20 | 2 | 3 | 0 | 4 | 2 | 5 | 1 | 0 | 0 | 0 | 0 | 2 | 3.235 |
| 58 | ACCT | 367 | Fed & Ny State Tax | BLUMENFRUCHT, I | 59 | 5 | 9 | 6 | 9 | 12 | 14 | 2 | 1 | 0 | 0 | 0 | 1 | 3.247 |
| 59 | ACCT | 367 | Fed & Ny State Tax | CALAMARI, J | 12 | 0 | 4 | 1 | 1 | 1 | 0 | 2 | 2 | 1 | 0 | 0 | 0 | 3.025 |
| 60 | ACCT | 367 | Fed & Ny State Tax | BARONE, E | 33 | 4 | 2 | 3 | 2 | 5 | 2 | 4 | 5 | 1 | 4 | 0 | 1 | 2.719 |
| 61 | ACCT | 367 | Fed & Ny State Tax | LEIBOWICZ, B | 20 | 1 | 0 | 1 | 0 | 2 | 0 | 2 | 4 | 0 | 4 | 1 | 2 | 2.020 |
| 62 | ACCT | 372 | Gov & Not for Profit Acct&Aud | BALKARAN, D | 43 | 0 | 9 | 10 | 7 | 5 | 3 | 1 | 2 | 0 | 0 | 2 | 4 | 3.218 |
| 63 | ACCT | 372 | Gov & Not for Profit Acct&Aud | SILVERMAN, A | 40 | 4 | 5 | 2 | 2 | 2 | 5 | 6 | 6 | 0 | 2 | 3 | 3 | 2.630 |
| 64 | ACCT | 372 | Gov & Not for Profit Acct&Aud | SUN, F | 37 | 0 | 1 | 1 | 3 | 8 | 8 | 5 | 6 | 0 | 3 | 0 | 2 | 2.563 |
| 65 | ACCT | 385 | Data Analytics for Accountants | SOLIERI, S | 16 | 2 | 2 | 1 | 3 | 0 | 1 | 0 | 2 | 0 | 0 | 2 | 3 | 2.792 |
| 76 | ACCT | 362W | Business Law II | HERCZOG, L | 21 | 1 | 6 | 5 | 5 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 3.585 |
| 77 | ACCT | 362W | Business Law II | LINN, D | 32 | 0 | 9 | 5 | 4 | 6 | 4 | 2 | 0 | 0 | 0 | 0 | 1 | 3.370 |
| 78 | ACCT | 362W | Business Law II | SEYMORE, J | 10 | 0 | 1 | 1 | 0 | 4 | 2 | 0 | 1 | 0 | 0 | 0 | 1 | 3.011 |
ACCT_df.shape
(68, 18)
unique(): This function returns an array of all unique values in the order that they appear in the original DataFrame or Series. It's useful when you want to see or use the actual unique values (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.unique.html)
nunique(): This function returns an integer that represents the number of unique values. It's useful when you just want to know how many unique values exist, rather than what those unique values are (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.nunique.html)
def gpa_letter_converter(gpa):
letter_grades = {
"A": 4.0,
"A-": (3.7, 3.8, 3.9),
"B+": (3.3, 3.4, 3.5, 3.6),
"B": (3.0, 3.1, 3.2),
"B-": (2.7, 2.8, 2.9),
"C+": (2.3, 2.4, 2.5, 2.6),
"C": (2.0, 2.1, 2.2),
"C-": (1.7, 1.8, 1.9),
"D": (1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6),
"F": (0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9)
}
for letter_grade, number_grade in letter_grades.items():
if isinstance(number_grade, float) and gpa == number_grade:
return letter_grade
elif isinstance(number_grade, tuple) and gpa in number_grade:
return letter_grade
return None
def calculate_average_gpas(df):
# Prepare a list to store the results
results = []
# GPA equivalents for each letter grade
letter_grades_to_gpa = {
"A+": 4.0,
"A": 4.0,
"A-": 3.7,
"B+": 3.3,
"B": 3.0,
"B-": 2.7,
"C+": 2.3,
"C": 2.0,
"C-": 1.7,
"D": 1.0,
"F": 0.0
}
# Loop over all unique course numbers
for class_nbr in df["NBR"].unique():
# Filter the DataFrame for the current course number
df_nbr = df[df["NBR"] == class_nbr]
# Loop over all unique professors for the current course number
for prof in df_nbr["PROF"].unique():
# Filter the DataFrame for the current professor
df_prof = df_nbr[df_nbr["PROF"] == prof]
# Calculate the average GPA for the current professor and course number
avg_gpa_prof = round(df_prof["AVG GPA"].mean(), 1)
# Convert the individual grade counts to GPA equivalents and calculate the standard deviation
gpa_distributions = []
for grade_letter, gpa in letter_grades_to_gpa.items():
gpa_distributions.extend([gpa] * df_prof[grade_letter].sum())
std_dev_gpa_prof = round(np.std(gpa_distributions), 2)
# Append the result to the list
results.append({
"CLASS NUMBER": class_nbr,
"PROF": prof,
"AVG GPA PROF": avg_gpa_prof,
"AVG GPA PROF LETTER": gpa_letter_converter(avg_gpa_prof),
"STD DEV GPA PROF": std_dev_gpa_prof
})
# If there is more than one professor for this course, calculate the average GPA for the current course number, regardless of the professor
if df_nbr["PROF"].nunique() > 1:
avg_gpa_nbr = round(df_nbr["AVG GPA"].mean(), 1)
# Convert the individual grade counts to GPA equivalents and calculate the standard deviation
gpa_distributions = []
for grade_letter, gpa in letter_grades_to_gpa.items():
gpa_distributions.extend([gpa] * df_nbr[grade_letter].sum())
std_dev_gpa_nbr = round(np.std(gpa_distributions), 2)
# Append the result to the list
results.append({
"CLASS NUMBER": class_nbr,
"PROF": "All Professors",
"AVG GPA PROF": avg_gpa_nbr,
"AVG GPA PROF LETTER": gpa_letter_converter(avg_gpa_nbr),
"STD DEV GPA PROF": std_dev_gpa_nbr
})
# Convert the list of results to a DataFrame
df_results = pd.DataFrame(results)
# Find the hardest class based on average GPA
hardest_class = df_results[df_results["PROF"] == "All Professors"].sort_values("AVG GPA PROF").iloc[0]
# Calculate the average GPA for the entire subject
avg_gpa_subject = round(df["AVG GPA"].mean(), 1)
print(f"The average GPA for this entire subject in Spring 2023 was: {avg_gpa_subject}, which is equal to a {gpa_letter_converter(avg_gpa_subject)}")
print(f"The hardest class based on average GPA in Spring 2023 was ACCT {hardest_class['CLASS NUMBER']} with an average GPA of {hardest_class['AVG GPA PROF']}, which is equal to a {hardest_class['AVG GPA PROF LETTER']}")
print("\nStandard deviation tells us about the spread of the grades that students received in each class. A higher standard deviation indicates a wider range of grades, while a lower standard deviation indicates that grades were more closely clustered around the average.")
return df_results
def calculate_teacher_gpas(df):
# Prepare a list to store the results
results = []
# GPA equivalents for each letter grade
letter_grades_to_gpa = {
"A+": 4.0,
"A": 4.0,
"A-": 3.7,
"B+": 3.3,
"B": 3.0,
"B-": 2.7,
"C+": 2.3,
"C": 2.0,
"C-": 1.7,
"D": 1.0,
"F": 0.0
}
# Loop over all unique professors
for prof in sorted(df["PROF"].unique()):
# Filter the DataFrame for the current professor
df_prof = df[df["PROF"] == prof]
# Calculate the average GPA for the current professor
avg_gpa_prof = round(df_prof["AVG GPA"].mean(), 1)
# Convert the individual grade counts to GPA equivalents and calculate the standard deviation
gpa_distributions = []
for grade_letter, gpa in letter_grades_to_gpa.items():
gpa_distributions.extend([gpa] * df_prof[grade_letter].sum())
std_dev_gpa_prof = round(np.std(gpa_distributions), 1)
# Calculate the percentage of students who withdrew for the current professor
withdraw_percentage = df_prof["W"].sum() / df_prof["TOTAL"].sum()
# Append the result to the list
results.append({
"PROF": prof,
"AVG GPA PROF": avg_gpa_prof,
"AVG GPA PROF LETTER": gpa_letter_converter(avg_gpa_prof),
"STD DEV GPA PROF": std_dev_gpa_prof,
"NUM OF CLASSES": len(df_prof),
"WITHDRAW PERCENTAGE": round(withdraw_percentage * 100, 1)
})
# Convert the list of results to a DataFrame
df_results = pd.DataFrame(results)
# Calculate the average GPA for the entire subject
avg_gpa_subject = round(df["AVG GPA"].mean(), 1)
# Calculate the average standard deviation for the entire subject
gpa_distributions = []
for grade_letter, gpa in letter_grades_to_gpa.items():
gpa_distributions.extend([gpa] * df[grade_letter].sum())
avg_std_dev_subject = round(np.std(gpa_distributions), 1)
# Calculate the average withdrawal percentage for the entire subject
withdraw_percentage_subject = round((df["W"].sum() / df["TOTAL"].sum()) * 100, 2)
# Find the professors who teach more than one class, have a GPA that is the same or higher than the subject average GPA,
# and for whom less than 40% of students withdrew
best_profs = df_results[(df_results["NUM OF CLASSES"] > 1) & (df_results["AVG GPA PROF"] >= avg_gpa_subject) & (df_results["WITHDRAW PERCENTAGE"] <= withdraw_percentage_subject)]
print(f"Professors who teach more than one class, have a GPA that is the same or higher than the subject average GPA ({avg_gpa_subject}), and have a withdrawal percentage that is less or equal than the subject average withdrawal percentage ({withdraw_percentage_subject}%):\n")
print(best_profs, "\n")
print("Please note that this automated analysis does not take ratings from RMP (RateMyProfessors) into account. While the provided statistics are based on GPA, it cannot conclude the amount of material students learned from each professor.\n")
print(f"The average standard deviation of GPA for all professors in this subject in Spring 2023 was: {avg_std_dev_subject}")
return df_results
ACCT_class_analysis = calculate_average_gpas(ACCT_df)
ACCT_class_analysis
The average GPA for this entire subject in Spring 2023 was: 2.8, which is equal to a B- The hardest class based on average GPA in Spring 2023 was ACCT 101 with an average GPA of 2.5, which is equal to a C+ Standard deviation tells us about the spread of the grades that students received in each class. A higher standard deviation indicates a wider range of grades, while a lower standard deviation indicates that grades were more closely clustered around the average.
| CLASS NUMBER | PROF | AVG GPA PROF | AVG GPA PROF LETTER | STD DEV GPA PROF | |
|---|---|---|---|---|---|
| 0 | 100 | HO, V | 3.4 | B+ | 0.51 |
| 1 | 101 | CHAN, J | 3.4 | B+ | 0.74 |
| 2 | 101 | FEISULLIN, A | 2.9 | B- | 1.00 |
| 3 | 101 | SUN, F | 2.6 | C+ | 1.22 |
| 4 | 101 | GRUZA, M | 2.6 | C+ | 1.21 |
| 5 | 101 | RUTHIZER, S | 2.6 | C+ | 1.04 |
| 6 | 101 | ROSANO, E | 2.6 | C+ | 0.96 |
| 7 | 101 | COWAN DOCKERY, M | 2.4 | C+ | 1.25 |
| 8 | 101 | XIAO, J | 1.9 | C- | 1.39 |
| 9 | 101 | DAUBER, N | 2.1 | C | 1.01 |
| 10 | 101 | All Professors | 2.5 | C+ | 1.20 |
| 11 | 102 | RUTHIZER, S | 3.1 | B | 0.71 |
| 12 | 102 | FEISULLIN, A | 3.0 | B | 0.84 |
| 13 | 102 | RUBIN, M | 2.6 | C+ | 0.79 |
| 14 | 102 | DAVID, A | 2.3 | C+ | 1.08 |
| 15 | 102 | GRUZA, M | 1.7 | C- | 1.33 |
| 16 | 102 | All Professors | 2.5 | C+ | 1.04 |
| 17 | 201 | SATENSTEIN, J | 3.7 | A- | 0.48 |
| 18 | 201 | BARONE, E | 3.0 | B | 1.12 |
| 19 | 201 | HEASLIP, K | 2.5 | C+ | 0.99 |
| 20 | 201 | COWAN DOCKERY, M | 2.1 | C | 1.31 |
| 21 | 201 | All Professors | 2.8 | B- | 1.15 |
| 22 | 202 | SCHWALB, H | 2.7 | B- | 0.88 |
| 23 | 202 | KUMAR, V | 2.6 | C+ | 1.32 |
| 24 | 202 | HEASLIP, K | 2.4 | C+ | 1.26 |
| 25 | 202 | All Professors | 2.6 | C+ | 1.14 |
| 26 | 261 | STEIN, R | 3.5 | B+ | 0.41 |
| 27 | 261 | KIRSCHNER, D | 3.0 | B | 0.67 |
| 28 | 261 | LEIBOWICZ, B | 2.7 | B- | 0.74 |
| 29 | 261 | ALTMAN, J | 2.7 | B- | 0.99 |
| 30 | 261 | All Professors | 3.0 | B | 0.85 |
| 31 | 305 | COHEN, M | 3.4 | B+ | 0.51 |
| 32 | 305 | QURESHI, A | 3.3 | B+ | 1.06 |
| 33 | 305 | SUN, T | 2.7 | B- | 1.45 |
| 34 | 305 | All Professors | 3.2 | B | 0.87 |
| 35 | 306 | ADELBERG, A | 3.6 | B+ | 0.59 |
| 36 | 306 | STEVENS, M | 3.4 | B+ | 0.48 |
| 37 | 306 | All Professors | 3.5 | B+ | 0.57 |
| 38 | 311 | BALKARAN, D | 3.2 | B | 0.98 |
| 39 | 311 | SATENSTEIN, J | 2.8 | B- | 1.15 |
| 40 | 311 | HUANG, Q | 2.5 | C+ | 1.62 |
| 41 | 311 | All Professors | 2.8 | B- | 1.26 |
| 42 | 321 | QAMAR, Z | 3.5 | B+ | 0.63 |
| 43 | 321 | FITZSIMONS, S | 2.9 | B- | 0.61 |
| 44 | 321 | UDDIN, M | 2.6 | C+ | 0.95 |
| 45 | 321 | DAUBER, N | 2.2 | C | 1.34 |
| 46 | 321 | All Professors | 2.8 | B- | 1.09 |
| 47 | 322 | FITZSIMONS, S | 3.2 | B | 0.55 |
| 48 | 322 | DAUBER, N | 3.0 | B | 0.69 |
| 49 | 322 | HITZIG, N | 2.4 | C+ | 0.70 |
| 50 | 322 | All Professors | 2.7 | B- | 0.74 |
| 51 | 341 | SUH, J | 1.8 | C- | 1.62 |
| 52 | 343 | QURESHI, A | 3.6 | B+ | 0.88 |
| 53 | 350 | SILVERMAN, A | 3.1 | B | 1.14 |
| 54 | 362 | KATZ, J | 3.1 | B | 0.73 |
| 55 | 362 | ALTMAN, J | 3.0 | B | 0.85 |
| 56 | 362 | All Professors | 3.1 | B | 0.80 |
| 57 | 363 | HERCZOG, L | 3.5 | B+ | 0.31 |
| 58 | 363 | LINN, D | 3.2 | B | 0.56 |
| 59 | 363 | All Professors | 3.4 | B+ | 0.49 |
| 60 | 367 | BLUMENFRUCHT, I | 3.2 | B | 0.55 |
| 61 | 367 | CALAMARI, J | 3.0 | B | 0.88 |
| 62 | 367 | BARONE, E | 2.7 | B- | 0.97 |
| 63 | 367 | LEIBOWICZ, B | 2.0 | C | 1.07 |
| 64 | 367 | All Professors | 2.8 | B- | 0.89 |
| 65 | 372 | BALKARAN, D | 3.2 | B | 0.93 |
| 66 | 372 | SILVERMAN, A | 2.6 | C+ | 1.16 |
| 67 | 372 | SUN, F | 2.6 | C+ | 0.68 |
| 68 | 372 | All Professors | 2.8 | B- | 0.99 |
| 69 | 385 | SOLIERI, S | 2.8 | B- | 1.37 |
| 70 | 362W | HERCZOG, L | 3.6 | B+ | 0.40 |
| 71 | 362W | LINN, D | 3.4 | B+ | 0.55 |
| 72 | 362W | SEYMORE, J | 3.0 | B | 0.54 |
| 73 | 362W | All Professors | 3.3 | B+ | 0.54 |
plt.figure()
all_prof_df_results = ACCT_class_analysis[ACCT_class_analysis["PROF"] == 'All Professors']
sns.histplot(all_prof_df_results["STD DEV GPA PROF"], kde = True, color = 'skyblue')
plt.axvline(all_prof_df_results["STD DEV GPA PROF"].mean(), color = 'red', linestyle = 'dashed', linewidth = 1, label = 'Mean')
min_ylim, max_ylim = plt.ylim()
plt.text(all_prof_df_results["STD DEV GPA PROF"].mean() * 1.12, max_ylim * 0.9, 'Mean: {:.2f}'.format(all_prof_df_results["STD DEV GPA PROF"].mean()))
# Generate a color palette with as many colors as classes
colors = sns.color_palette("husl", len(all_prof_df_results))
for idx, (_, row) in enumerate(all_prof_df_results.iterrows()):
plt.axvline(row["STD DEV GPA PROF"], color = colors[idx], linestyle = 'dotted', linewidth = 0.5, label = row["CLASS NUMBER"])
plt.title("Distribution of Standard Deviations of GPAs")
plt.xlabel("Standard Deviation")
plt.ylabel("Frequency")
plt.legend(loc = 'upper right', bbox_to_anchor = (1.3, 1)) # Adjusted the location to ensure it doesn't overlap with the plot
plt.show()
ACCT_prof_analysis = calculate_teacher_gpas(ACCT_df)
ACCT_prof_analysis
Professors who teach more than one class, have a GPA that is the same or higher than the subject average GPA (2.8), and have a withdrawal percentage that is less or equal than the subject average withdrawal percentage (10.03%):
PROF AVG GPA PROF AVG GPA PROF LETTER STD DEV GPA PROF \
1 ALTMAN, J 2.8 B- 1.0
7 COHEN, M 3.4 B+ 0.5
12 FITZSIMONS, S 3.1 B 0.6
15 HERCZOG, L 3.6 B+ 0.4
23 LINN, D 3.3 B+ 0.6
25 QURESHI, A 3.5 B+ 1.0
28 RUTHIZER, S 2.8 B- 0.9
29 SATENSTEIN, J 3.1 B 1.1
32 SILVERMAN, A 2.8 B- 1.2
34 STEIN, R 3.5 B+ 0.4
NUM OF CLASSES WITHDRAW PERCENTAGE
1 3 4.1
7 2 6.6
12 2 2.7
15 2 2.9
23 2 5.8
25 3 9.5
28 2 5.6
29 3 6.5
32 2 9.6
34 2 8.7
Please note that this automated analysis does not take ratings from RMP (RateMyProfessors) into account. While the provided statistics are based on GPA, it cannot conclude the amount of material students learned from each professor.
The average standard deviation of GPA for all professors in this subject in Spring 2023 was: 1.1
| PROF | AVG GPA PROF | AVG GPA PROF LETTER | STD DEV GPA PROF | NUM OF CLASSES | WITHDRAW PERCENTAGE | |
|---|---|---|---|---|---|---|
| 0 | ADELBERG, A | 3.6 | B+ | 0.6 | 1 | 5.8 |
| 1 | ALTMAN, J | 2.8 | B- | 1.0 | 3 | 4.1 |
| 2 | BALKARAN, D | 3.2 | B | 0.9 | 2 | 10.9 |
| 3 | BARONE, E | 2.9 | B- | 1.0 | 2 | 11.5 |
| 4 | BLUMENFRUCHT, I | 3.2 | B | 0.5 | 1 | 1.7 |
| 5 | CALAMARI, J | 3.0 | B | 0.9 | 1 | 0.0 |
| 6 | CHAN, J | 3.4 | B+ | 0.7 | 1 | 13.8 |
| 7 | COHEN, M | 3.4 | B+ | 0.5 | 2 | 6.6 |
| 8 | COWAN DOCKERY, M | 2.3 | C+ | 1.3 | 2 | 21.1 |
| 9 | DAUBER, N | 2.4 | C+ | 1.1 | 3 | 12.1 |
| 10 | DAVID, A | 2.3 | C+ | 1.1 | 2 | 12.3 |
| 11 | FEISULLIN, A | 3.0 | B | 0.9 | 2 | 11.5 |
| 12 | FITZSIMONS, S | 3.1 | B | 0.6 | 2 | 2.7 |
| 13 | GRUZA, M | 2.1 | C | 1.3 | 2 | 36.8 |
| 14 | HEASLIP, K | 2.4 | C+ | 1.1 | 3 | 12.5 |
| 15 | HERCZOG, L | 3.6 | B+ | 0.4 | 2 | 2.9 |
| 16 | HITZIG, N | 2.4 | C+ | 0.7 | 2 | 4.8 |
| 17 | HO, V | 3.4 | B+ | 0.5 | 1 | 15.0 |
| 18 | HUANG, Q | 2.5 | C+ | 1.6 | 1 | 4.3 |
| 19 | KATZ, J | 3.1 | B | 0.7 | 1 | 10.3 |
| 20 | KIRSCHNER, D | 3.0 | B | 0.7 | 1 | 10.5 |
| 21 | KUMAR, V | 2.6 | C+ | 1.3 | 1 | 25.0 |
| 22 | LEIBOWICZ, B | 2.4 | C+ | 0.9 | 2 | 3.6 |
| 23 | LINN, D | 3.3 | B+ | 0.6 | 2 | 5.8 |
| 24 | QAMAR, Z | 3.5 | B+ | 0.6 | 1 | 7.5 |
| 25 | QURESHI, A | 3.5 | B+ | 1.0 | 3 | 9.5 |
| 26 | ROSANO, E | 2.6 | C+ | 1.0 | 1 | 7.5 |
| 27 | RUBIN, M | 2.6 | C+ | 0.8 | 1 | 21.4 |
| 28 | RUTHIZER, S | 2.8 | B- | 0.9 | 2 | 5.6 |
| 29 | SATENSTEIN, J | 3.1 | B | 1.1 | 3 | 6.5 |
| 30 | SCHWALB, H | 2.7 | B- | 0.9 | 1 | 14.8 |
| 31 | SEYMORE, J | 3.0 | B | 0.5 | 1 | 10.0 |
| 32 | SILVERMAN, A | 2.8 | B- | 1.2 | 2 | 9.6 |
| 33 | SOLIERI, S | 2.8 | B- | 1.4 | 1 | 18.8 |
| 34 | STEIN, R | 3.5 | B+ | 0.4 | 2 | 8.7 |
| 35 | STEVENS, M | 3.4 | B+ | 0.5 | 1 | 10.0 |
| 36 | SUH, J | 1.8 | C- | 1.6 | 1 | 0.0 |
| 37 | SUN, F | 2.6 | C+ | 1.0 | 2 | 10.4 |
| 38 | SUN, T | 2.7 | B- | 1.4 | 1 | 10.5 |
| 39 | UDDIN, M | 2.6 | C+ | 1.0 | 1 | 15.4 |
| 40 | XIAO, J | 1.9 | C- | 1.4 | 2 | 13.9 |
# Set the overall average GPA
mean_gpa = 2.8
# Create the scatter plot using Plotly Express
fig = px.scatter(ACCT_prof_analysis,
x = list(range(len(ACCT_prof_analysis))),
y = 'AVG GPA PROF',
hover_name = 'PROF', # This will show the professor's name when hovering over a point
title = "ACCT Professor GPA Averages vs ACCT Subject Average GPA",
labels = {'x': 'Professor (By Index Above)', 'y': 'Average GPA'},
size_max = 100)
# Add a line for the average GPA
fig.add_shape(
type = 'line',
line = dict(dash='dash', color='red'),
x0 = 0,
x1 = len(ACCT_prof_analysis),
y0 = mean_gpa,
y1 = mean_gpa,
)
# Show the plot
fig.show()
# Count the number of professors with an average GPA at or greater than 3.0 and those less than 3.0
# The red percentage assumes that if a professor's GPA falls in the cutoff (greater than 2.7 but less than 3.0), it will automatically be rounded to a B- (2.7)
green_percentage = ACCT_prof_analysis[ACCT_prof_analysis['AVG GPA PROF'] >= 3.0].shape[0]
red_percentage = ACCT_prof_analysis[ACCT_prof_analysis['AVG GPA PROF'] < 3.0].shape[0]
# Create the values and labels for the pie chart
values = [green_percentage, red_percentage]
labels = ['At or above 3.0 (B or above)', 'At or below 2.7 (B- or below)']
# Define the colors for each section (green and red)
colors = ['#77dd77', '#ff6961']
# Plot the pie chart
plt.figure(figsize = (6, 6))
plt.pie(values, labels = labels, colors = colors, autopct = '%1.1f%%')
# Set the title
plt.title("Average GPA of all ACCT Professors")
# Show the plot
plt.show()
ACCT 100 (Financial and Managerial Accounting) - This is a course in the theories and principles of financial and managerial accounting. Financial accounting includes the study of the preparation and interpretation of commonly used financial statements. Managerial accounting deals with the use of accounting data for managerial control and planning. Students will be introduced to the use of accounting systems programmed for the microcomputer, and to managerial decision making based on mathematical modeling.
ACCT 101 (Introduction to the Theory and Practice of Accounting I) - Fundamentals of accounting information, the foundation of the accounting system for recording assets, liability and equity transactions, financial statement principles, and the preparation and interpretation of basic financial statements. Structure, double-entry model, initial, adjusting, and closing entries are covered.
Joseph Chan (https://www.ratemyprofessors.com/professor/2019604), AVG GPA: 3.4 (equivalent to a B+), AVG RMP Rating: 4.6/5
Anita Feisullin (https://www.ratemyprofessors.com/professor/1632337), AVG GPA: 3.0 (equivalent to a B), AVG RMP Rating: 4.1/5
Fang Sun (https://www.ratemyprofessors.com/professor/1987534), AVG GPA: 2.6 (equivalent to a C+), AVG RMP Rating: 3.6/5
Marvin Gruza (https://www.ratemyprofessors.com/professor/623836), AVG GPA: 2.1 (equivalent to a C), AVG RMP Rating: 2.3/5
Scott Ruthizer (https://www.ratemyprofessors.com/professor/139834), AVG GPA: 2.8 (equivalent to a B-), AVG RMP Rating: 4.3/5
Eric Rosano (https://www.ratemyprofessors.com/professor/2861879), AVG GPA: 2.6 (equivalent to a C+), AVG RMP Rating: 4.5/5
Marlene Cowan Dockery (https://www.ratemyprofessors.com/professor/1855770), AVG GPA: 2.3 (equivalent to a C+), AVG RMP Rating: 4/5
Jian Xiao (https://www.ratemyprofessors.com/professor/1766712), AVG GPA: 1.9 (equivalent to a C-), AVG RMP Rating: 1.8/5
Nicky Dauber (https://www.ratemyprofessors.com/professor/342477), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 3.5/5
ACCT 102 (Introduction to the Theory and Practice of Accounting II) - A continuation of ACCT 101, with a much more in-depth study of the groundwork and constructed preparation needed in various balance sheet and income statement areas prior to the preparation of financial statements, including managerial accounting with basic quantitative analysis.
Scott Ruthizer (https://www.ratemyprofessors.com/professor/139834), AVG GPA: 2.8 (equivalent to a B-), AVG RMP Rating: 4.3/5
Anita Feisullin (https://www.ratemyprofessors.com/professor/1632337), AVG GPA: 3.0 (equivalent to a B), AVG RMP Rating: 4.1/5
Marvin Gruza (https://www.ratemyprofessors.com/professor/623836), AVG GPA: 2.1 (equivalent to a C), AVG RMP Rating: 2.3/5
Matthew Rubin (https://www.ratemyprofessors.com/professor/2795005), AVG GPA: 2.6 (equivalent to a C+), AVG RMP Rating: 5/5
Amy David (https://www.ratemyprofessors.com/professor/327209), AVG GPA: 2.3 (equivalent to a C+), AVG RMP Rating: 4.1/5
ACCT 201 (Intermediate Accounting l) - Intensive study of the theories of financial accounting, generally accepted accounting principles, and applications thereof, including relevant standards, statements, and opinions of the FASB, AICPA, and SEC. Pertinent mathematical principles and applications relating to financial accounting are also presented.
Jeffrey Satenstein (https://www.ratemyprofessors.com/professor/2015333), AVG GPA: 3.1 (equivalent to a B), AVG RMP Rating: 3.6/5
Ernest Barone (https://www.ratemyprofessors.com/professor/599563), AVG GPA: 2.9 (equivalent to a B-), AVG RMP Rating: 4/5
Kenneth Heaslip (https://www.ratemyprofessors.com/professor/2859471), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 3.8/5
Marlene Cowan Dockery (https://www.ratemyprofessors.com/professor/1855770), AVG GPA: 2.3 (equivalent to a C+), AVG RMP Rating: 4/5
ACCT 202 (Intermediate Accounting II) - Intensive study of the theories of financial accounting, generally accepted accounting principles, and applications thereof, including relevant standards, statements, and opinions of the FASB, AICPA, and SEC. Pertinent mathematical principles and applications relating to financial accounting are also presented.
Helen Schwalb (https://www.ratemyprofessors.com/professor/1702863), AVG GPA: 2.7 (equivalent to a B-), AVG RMP Rating: 3.6/5
Vijay Kumar (https://www.ratemyprofessors.com/professor/888937), AVG GPA: 2.6 (equivalent to a C+), AVG RMP Rating: 3.9/5
Kenneth Heaslip (https://www.ratemyprofessors.com/professor/2859471), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 3.8/5
ACCT 261 (Business Law I) - Introduction to the law. Seeks to provide majors and nonmajors with an understanding of the law and the social forces that shape it. The basic structure through which law is implemented and enforced is reviewed, in addition to thespecific rules of law relating to contracts, trusts, and estates.
Randy Stein (https://www.ratemyprofessors.com/professor/1124181), AVG GPA: 3.5 (equivalent to a B+), AVG RMP Rating: 4.9/5
David Kirschner (https://www.ratemyprofessors.com/professor/210979), AVG GPA: 3.0 (equivalent to a B), AVG RMP Rating: 3.9/5
Barry Leibowicz (https://www.ratemyprofessors.com/professor/454843), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 3.8/5
Julie Altman (https://www.ratemyprofessors.com/professor/407653), AVG GPA: 2.8 (equivalent to a B-), AVG RMP Rating: 4.3/5
ACCT 305 (Cost Accounting) - The concepts and procedures used to account for the cost of manufacturing and selling, with their practical application in different types of cost accumulation systems (i.e., job-order costing, process costing, joint- product costing, standard costing, and direct costing).
Martin Cohen (https://www.ratemyprofessors.com/professor/2343154), AVG GPA: 3.4 (equivalent to a B+), AVG RMP Rating: 4.3/5
Anique Qureshi (https://www.ratemyprofessors.com/professor/2081516), AVG GPA: 3.5 (equivalent to a B+), AVG RMP Rating: 2.3/5
Tao Sun (https://www.ratemyprofessors.com/professor/2701815), AVG GPA: 2.7 (equivalent to a B-), AVG RMP Rating: 4.1/5
ACCT 306 (Quantitative Techniques in Planning and Control) - The application of quantitative and programming techniques in managerial decision- making, including probability analysis, mathematical programming, network models, queuing theory, Monte Carlo simulation, and regression/correlation analysis, inventory models, and capital budgeting.
Arthur Adelberg (https://www.ratemyprofessors.com/professor/338730), AVG GPA: 3.6 (equivalent to an B+), AVG RMP Rating: 4.5/5
Michael Stevens (https://www.ratemyprofessors.com/professor/2176464), AVG GPA: 3.4 (equivalent to a B+), AVG RMP Rating: 3.8/5
ACCT 311 (Advanced Accounting) - Theory of accounting applicable to problems peculiar to large-scale business operations, including business combinations, consolidations, partnerships, foreign exchange translation, segment and interim reporting. Open to declared Accounting majors only.
Dianand Balkaran (https://www.ratemyprofessors.com/professor/590729), AVG GPA: 3.2 (equivalent to a B), AVG RMP Rating: 4.8/5
Jeffrey Satenstein (https://www.ratemyprofessors.com/professor/2015333), AVG GPA: 3.1 (equivalent to a B), AVG RMP Rating: 3.6/5
Qianyun Huang (https://www.ratemyprofessors.com/professor/1517298), AVG GPA: 2.5 (equivalent to a C+), AVG RMP Rating: 4.3/5
ACCT 321 (Auditing I) - Principles and standards relevant to the attestation function in the practice of professional accountancy including audits, examinations, reviews and agreed-upon procedures. Coverage also includes professional ethics, liability, risk and assurance, evidence, introduction to internal control and reporting. This course provides exposure to the techniques of modern auditing, including the flow charting, analysis, and understanding of accounting cycles and their related control systems, analytical review of financial statements, analytical tests of accounting estimates, and statistical sampling for tests of transactions and accounts.
Zohaib Qamar (https://www.ratemyprofessors.com/professor/2286544), AVG GPA: 3.5 (equivalent to a B+), AVG RMP Rating: 4.6/5
Sean Fitzsimons (https://www.ratemyprofessors.com/professor/390216), AVG GPA: 3.1 (equivalent to a B), AVG RMP Rating: 2.8/5
Md Uddin (https://www.ratemyprofessors.com/professor/2476413), AVG GPA: 2.6 (equivalent to a C+), AVG RMP Rating: 2/5
Nicky Dauber (https://www.ratemyprofessors.com/professor/342477), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 3.5/5
ACCT 322 (Auditing II) - Principles and standards relevant to the attestation function in the practice of professional accountancy including audits, examinations, reviews and agreed-upon procedures. Coverage also includes professional ethics, liability, risk and assurance, evidence, introduction to internal control and reporting. This course provides exposure to the techniques of modern auditing, including the flowcharting, analysis, and understanding of accounting cycles and their related control systems, analytical review of financial statements, analytical tests of accounting estimates, and statistical sampling for tests of transactions and accounts.
Sean Fitzsimons (https://www.ratemyprofessors.com/professor/390216), AVG GPA: 3.1 (equivalent to a B), AVG RMP Rating: 2.8/5
Nicky Dauber (https://www.ratemyprofessors.com/professor/342477), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 3.5/5
Neal Hitzig (https://www.ratemyprofessors.com/professor/479473), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 2.9/5
ACCT 341 (Accounting Information Systems) - This course focuses on methods and techniques for the analysis and evaluation of the design of accounting information systems, including computer-based systems. Topics covered will include an introduction to accounting systems theory, analysis of accounting systems, including documentation and design theory, accounting file structure, hardware/ software selection and impact on accounting systems, system life cycle, including accounting controls, and systems implementation and maintenance from the auditor's standpoint. This course will require some use of computer resources.
ACCT 343 (Microcomputer Applications in Accounting) - This course deals with specific uses of microcomputers as tools in the discipline of accounting in the following areas: transaction processing, analysis, and report preparation using commercial accounting systems; and mathematical and statistical analysis models that are used for managerial and financial accounting purposes. Software used includes database management systems with translation utilities, permitting transfer of data from one commercial system to another through the use of Data Interchange Formats. Integrated packages are used to prepare reports incorporating analyzed data and graphics.
ACCT 350 (Financial Statement Analysis) - Analysis is made of financial statements from the perspective of users and preparers of financial reports, including investors, creditors, auditors, accountants, and management. Financial statements and related disclosures will be analyzed to gain a perspective on the company's health.
ACCT 362 (Business Law II) - The law relating to forms of business organizations. Focus centers on agency and partnership relationships, corporate structure, and the role of government in business. Also considered are landlord relationships and bailments.
Jeffrey Katz (https://www.ratemyprofessors.com/professor/2418919), AVG GPA: 3.1 (equivalent to a B), AVG RMP Rating: 5/5
Julie Altman (https://www.ratemyprofessors.com/professor/407653), AVG GPA: 2.8 (equivalent to a B-), AVG RMP Rating: 4.3/5
ACCT 362W (Business Law II) - The law relating to forms of business organizations. Focus centers on agency and partnership relationships, corporate structure, and the role of government in business. Also considered are landlord relationships and bailments.
Leo Herczog (https://www.ratemyprofessors.com/professor/2427395), AVG GPA: 3.6 (equivalent to an B+), AVG RMP Rating: 4.5/5
David Linn (https://www.ratemyprofessors.com/professor/788206), AVG GPA: 3.3 (equivalent to a B+), AVG RMP Rating: 3.9/5
Javier Seymore (https://www.ratemyprofessors.com/professor/843900), AVG GPA: 3.0 (equivalent to a B), AVG RMP Rating: 4.4/5
ACCT 363 (Business Law III) - The law relating to commercial transactions. Focus of the course is the Uniform Commercial Code, with particular emphasis on sales law, commercial paper law, and the law of secured transactions. Also considered are the laws relating to intellectual property, professional liability, international law, insurance, and bankruptcy.
Leo Herczog (https://www.ratemyprofessors.com/professor/2427395), AVG GPA: 3.6 (equivalent to an B+), AVG RMP Rating: 4.5/5
David Linn (https://www.ratemyprofessors.com/professor/788206), AVG GPA: 3.3 (equivalent to a B+), AVG RMP Rating: 3.9/5
ACCT 367 (Federal and New York State Taxes on Income) - An introduction to the federal income tax as it relates to individuals. Particular emphasis is given to the basic multitiered tax structure. The underlying concepts of basis, inclusion, exclusion, and deduction are defined, utilizing the Internal Revenue Code and related material. Special classes of taxpayers including partnerships, estates, trusts, corporations of various types, and foreign taxpayers are considered as well as accounting and procedural rules.
Israel Blumenfrucht (https://www.ratemyprofessors.com/professor/223587), AVG GPA: 3.2 (equivalent to a B), AVG RMP Rating: 3.8/5
Joseph Calamari (https://www.ratemyprofessors.com/professor/2396148), AVG GPA: 3.0 (equivalent to a B), AVG RMP Rating: 4.4/5
Ernest Barone (https://www.ratemyprofessors.com/professor/599563), AVG GPA: 2.9 (equivalent to a B-), AVG RMP Rating: 4/5
Barry Leibowicz (https://www.ratemyprofessors.com/professor/454843), AVG GPA: 2.4 (equivalent to a C+), AVG RMP Rating: 3.8/5
ACCT 372 (Governmental and Not-for-Profit Accounting and Auditing) - The course focuses on accounting, financial reporting, and auditing relevant to governmental and not-for-profit entities.
Dianand Balkaran (https://www.ratemyprofessors.com/professor/590729), AVG GPA: 3.2 (equivalent to a B), AVG RMP Rating: 4.8/5
Fang Sun (https://www.ratemyprofessors.com/professor/1987534), AVG GPA: 2.6 (equivalent to a C+), AVG RMP Rating: 3.6/5
Arthur Silverman (https://www.ratemyprofessors.com/professor/1449716), AVG GPA: 2.8 (equivalent to a B-), AVG RMP Rating: 4/5
ACCT 385 (Data Analytics for Accountants) - The course utilizes various Data Analytic Tools (Excel, IDEA, "R", Python, Tableau, XBRL) used by accountants and CPAs in auditing, taxation and consulting services. The emphasis is on hands-on learning by completing projects in the classroom and for homework to develop the data analytic skills valued by employers. An elective course for the Major in Accounting and Information Systems, will satisfy either the “A (Accounting)” or “B (Business or Economics)” elective category.